package br.com.wepa.webapps.orca.logica.modelo;

// Generated 12/01/2007 02:01:35 by Hibernate Tools 3.2.0.beta8

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;


/**
 * Grupo generated by hbm2java
 */

@Entity

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="nivel",
discriminatorType=DiscriminatorType.STRING
)
@Table(name = "grupo", catalog = "Orca", uniqueConstraints = {})
@DiscriminatorValue("Grupo")
public class Grupo implements java.io.Serializable {

	// Fields    
	/**
	 * 
	 */
	private static final long serialVersionUID = 7582043759635356416L;

	private int idGrupo;

	private String nome;

	private Grupo pai;
	
	private String descricao;
	
	private Set<Grupo> filhos= new HashSet<Grupo>(0);

	// Constructors

	/** default constructor */
	public Grupo() {
	}

	/** minimal constructor */
	public Grupo(int idGrupo, String nome) {
		this.idGrupo = idGrupo;
		this.nome = nome;
	}

	/** full constructor */
	public Grupo(int idGrupo, String nome, Grupo pai, Set<Grupo> filhos) {
		this.idGrupo = idGrupo;
		this.nome = nome;
		this.pai = pai;
		this.filhos = filhos;
	}

	// Property accessors
	@Id
	@Column(name = "idGrupo", unique = true, nullable = false, insertable = true, updatable = true)
	public int getIdGrupo() {
		return this.idGrupo;
	}

	public void setIdGrupo(int idGrupo) {
		this.idGrupo = idGrupo;
	}

	@Column(name = "nome", unique = false, nullable = false, insertable = true, updatable = true, length = 45)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
	
	@OneToMany(cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY, mappedBy = "pai")
	public Set<Grupo> getFilhos() {
		return this.filhos;
	}

	public void setFilhos(Set<Grupo> filhos) {
		this.filhos = filhos;
	}
	
	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "Grupo_idGrupo", unique = false, nullable = true, insertable = true, updatable = true)
	public Grupo getPai() {
		return pai;
	}

	public void setPai(Grupo pai) {
		this.pai = pai;
	}
	
	@Column(name = "descricao", unique = false, nullable = true, insertable = true, updatable = true, length = 500)
	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	

}


